package com.ykx.message.facade;

import com.ykx.message.model.ReqMessage;
import com.ykx.message.model.RspValue;

public interface MessageFacade {
	/**
	 * 预提交
	 * @param reqMessage
	 * @return
	 */
	public RspValue saveMessageNotConfirm(ReqMessage reqMessage);
	/**
	 * 确定提交消息
	 * @param messageId
	 * @param consumerQueue
	 * @return
	 */
	public RspValue confirmSendMessage(String messageId,String consumerQueue);
	/**
	 * 直接保存提交消息=预提交+确定提交
	 * @param reqMessage
	 * @return
	 */
	public RspValue saveMessageConfirmSend(ReqMessage reqMessage);
	/**
	 * 直接发送消息,不保存消息记录.主要是通知类使用
	 * @param reqMessage
	 * @return
	 */
	public RspValue directSendNotSaveMessage(ReqMessage reqMessage);
	/**
	 * 重发消息
	 * @param messageId
	 * @param consumerQueue
	 * @return
	 */
	public RspValue reSendMessage(String messageId,String consumerQueue);
	/**
	 * 设置消息为死亡状态
	 * @param messageId
	 * @param consumerQueue
	 * @return
	 */
	public RspValue setMessageToAreadlyDead(String messageId,String consumerQueue);
	/**
	 * 获取单条消息
	 * @param messageId
	 * @param consumerQueue
	 * @return
	 */
	public RspValue getMessage(String messageId,String consumerQueue);
	/**
	 * 删除单条消息
	 * @param messageId
	 * @param consumerQueue
	 * @return
	 */
	public RspValue deleteMessage(String messageId,String consumerQueue);
	
	/**
	 * 重发指定队列的死亡消息(消息管理使用)
	 * @param queueName
	 * @param batchSize
	 * @return
	 */
	public RspValue reSendAllDeadMessageByQueueName(String queueName, int batchSize);
	/**
	 * 没有确定发送消息的超时记录
	 * @param batchSize
	 * @return
	 */
	public RspValue queryNotConfirmTimeOut(int batchSize);
	/**
	 * 确定发送消息的超时记录
	 * @param batchSize
	 * @return
	 */
	public RspValue queryConfirmTimeOut(int batchSize);
	
}
